package com.chenyongjing.design.pattern.strategy.template.course;

public abstract class AbstractCourse {
    protected final void createCourse(){
        // 1. 发布预习资料
        postPreResoucse();
        // 2. 制作课件
        createPPT();
        // 3. 直播授课
        liveVideo();
        // 4. 上传课后资料
        postRespose();
        // 5. 布置作业
        postHomeWork();
        if (needCheckHomwork()){
            checkHomework();
        }
    }

    /**
     * 让子类来实现
     */
    protected abstract void checkHomework();

    /**
     * 钩子方法
     */
    protected boolean needCheckHomwork(){
        return false;
    }


    protected void postPreResoucse(){
        System.out.println("发布预习资料");
    }
    protected void createPPT(){
        System.out.println("制作课件");
    }
    protected void liveVideo(){
        System.out.println("直播授课");
    }
    protected void postRespose(){
        System.out.println("上传课后资料");
    }
    protected void postHomeWork(){
        System.out.println("布置作业");
    }

}
